﻿using System;
using System.Collections.Generic;
using System.Text;
using AbcCorp.DTO;
using AbcCorp.DAO;

namespace AbcCorp.BLO
{
    public class AccountBlo
    {
        /// <summary>
        /// Đăng nhập
        /// </summary>
        /// <param name="username">Tài khoản</param>
        /// <param name="password">Mật khẩu</param>
        /// <returns>Tài khoản (Account)</returns>
        public AccountDto SignIn(string username, string password)
        {
            if (string.IsNullOrEmpty(username) || string.IsNullOrEmpty(password)) return null;
            var accountDao = new AccountDao();
            return accountDao.SignIn(username, password);
        }

        /// <summary>
        /// Đăng ký
        /// </summary>
        /// <param name="newAccount">Thông tin tài khoản mới</param>
        /// <returns>Giá trị âm nếu thất bại, ngược lại nếu thành công</returns>
        public bool SignUp(AccountDto newAccount)
        {
            if (
                string.IsNullOrEmpty(newAccount.Username) || string.IsNullOrEmpty(newAccount.Password) || string.IsNullOrEmpty(newAccount.Fname) ||
                string.IsNullOrEmpty(newAccount.Lname) || string.IsNullOrEmpty(newAccount.Phone) ||  string.IsNullOrEmpty(newAccount.Address)
                )
            {
                return false;
            }
            var accountDao = new AccountDao();
            return accountDao.SignUp(newAccount);
        }


        /// <summary>
        /// Lấy lại mật khẩu
        /// </summary>
        /// <param name="username">Tài khoản</param>
        /// <param name="email">Email</param>
         public string GetPassword(string username, string email)
         {
             if (string.IsNullOrEmpty(username) || string.IsNullOrEmpty(email)) return "";
             var accountDao = new AccountDao();
             return accountDao.GetPassword(username, email);
         }

         /// <summary>
         /// Thay đổi mật khẩu
         /// </summary>
         /// <param name="username">Tài khoản</param>
         /// <param name="email">Email</param>
         /// <param name="password">Mật khẩu cũ</param>
         /// <param name="newpassword">Mật khẩu mới</param>
        public bool UpdatePassword(string username, string email, string password, string newpassword)
        {
            if (string.IsNullOrEmpty(username) || string.IsNullOrEmpty(email) || 
                string.IsNullOrEmpty(password) || string.IsNullOrEmpty(newpassword))
            {
                return false;
            }
            var accountDao = new AccountDao();
            return accountDao.UpdatePassword(username, email, password, newpassword);
        }

        /// <summary>
        /// Thay đổi mật khẩu khi người dùng sử dụng chức năng lấy lại mật khẩu
        /// </summary>
        /// <param name="code">Mã người dùng nhận được khi eyeeu cầu lấy lại mật khẩu</param>
        /// <param name="newPassword">Mật khẩu mới</param>
        public bool UpdatePasswordByCode(string code, string newPassword)
        {
            if (string.IsNullOrEmpty(code) || string.IsNullOrEmpty(newPassword))
            {
                return false;
            }
            var accountDao = new AccountDao();
            return accountDao.UpdatePasswordByCode(code, newPassword);
        }

        /// <summary>
        /// Lấy mã tài khoản
        /// </summary>
        /// <param name="username">Tài khoản</param>
        /// <returns>Mật khẩu (string)</returns>
        public int GetAccountId(string username)
        {
            if (string.IsNullOrEmpty(username))
            {
                return -1;
            }
            var accountDao = new AccountDao();
            return accountDao.GetAccountId(username);
        }

    }
}
